package com.wzf.exception;

import com.wzf.pojo.resp.ResponseReuslt;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@RestControllerAdvice
@Slf4j
public class ExceptionHandlerAdvice {

    /**
     * 参数校验异常处理器
     * @param ex
     */
    @ExceptionHandler({MethodArgumentNotValidException.class})
    public ResponseReuslt handlerValidationException(MethodArgumentNotValidException ex){

        log.error("handlerValidationException",ex);
        StringBuilder sb = new StringBuilder();
        ex.getBindingResult().getAllErrors().forEach(error->{
            String field = ((FieldError) error).getField();
            String message = error.getDefaultMessage();
            sb.append(field).append(":").append(message);
        });
        return ResponseReuslt.error().message(sb.toString());
    }


    /**
     * 默认异常处理器
     * @param ex
     */
    @ExceptionHandler({Exception.class})
    public ResponseReuslt defaultHandlerException(Throwable ex){
        log.error("defaultHandlerException",ex);
        return ResponseReuslt.error().message("网络开小差了，请稍后重试......");
    }
}
